package org.fangzz.cameramgr.cameramonitor.service;

import org.fangzz.cameramgr.cameramonitor.dto.ResultCode;
import org.fangzz.cameramgr.cameramonitor.model.Camera;
import org.fangzz.cameramgr.cameramonitor.model.FfmpegProcess;

import java.util.Collection;

/**
 * FFMpeg进程管理服务
 * Created by cengruilin on 2018/6/7.
 */
public interface FfmpegProcessService {


    /**
     * 开启直播转码
     * @param cameraId 对应的摄像头ID
     * @return
     */
    FfmpegProcess startLiveConversion(Integer storeId, Integer cameraId, String resolution);


    /**
     * 退出直播监控
     * @param cameraId
     * @return
     */
    void exitLiveMonitor(Integer cameraId);


    /**
     * 开启录播文件转码
     * @return
     */
    FfmpegProcess startRecordConversion();


    /**
     * 关闭录播文件转码
     */
    void killRecordConversion();

    /**
     * 关闭最先开启的转码进程
     */
    boolean killFirstFfmpegProcess(Integer storeId) throws Exception;

    /**
     * 查询直播进程是否删除
     * @param cameraId
     * @return
     */

    ResultCode checkIsDeleted(Integer cameraId);

    /**
     * 获取当前正在运行的进程数
     *
     * @return
     */
    int countOfRunning();


    /**
     * 查询所有转换进程
     *
     * @return
     */
    Collection<FfmpegProcess> findAll();

    /**
     * 获取指定data进程的最新日志
     *
     * @param data
     * @return
     */
    String getLastOutput(String data);
}
